home *** CD-ROM | disk | FTP | other *** search
open in:
MacOS 8.1
|
Win98
|
DOS
browse contents |
view JSON data
|
view as text
This file was processed as: Mailbox/MIME Entity
(archive/mbox).
Confidence | Program | Detection | Match Type | Support
|
---|
100%
| dexvert
| Mailbox/MIME Entity (archive/mbox)
| magic
| Supported |
1%
| dexvert
| Text File (text/txt)
| fallback
| Supported |
100%
| file
| C source text
| default
| |
99%
| file
| C source textAlgol 68 source text
| default
| |
98%
| file
| Pascal source, ASCII text
| default
| |
100%
| checkBytes
| Printable ASCII
| default
| |
100%
| perlTextCheck
| Likely Text (Perl)
| default
| |
100%
| siegfried
| fmt/950 MIME Email (1.0)
| default
| |
100%
| detectItEasy
| Format: plain text[LF]
| default (weak)
|
|
hex view+--------+-------------------------+-------------------------+--------+--------+
|00000000| 58 2d 52 44 61 74 65 3a | 20 46 72 69 2c 20 30 39 |X-RDate:| Fri, 09|
|00000010| 20 4f 63 74 20 31 39 39 | 38 20 30 39 3a 31 35 3a | Oct 199|8 09:15:|
|00000020| 31 35 20 2b 30 31 30 30 | 20 28 49 53 54 29 0a 52 |15 +0100| (IST).R|
|00000030| 65 63 65 69 76 65 64 3a | 20 66 72 6f 6d 20 6d 61 |eceived:| from ma|
|00000040| 69 6c 67 61 74 65 2e 75 | 6c 2e 69 65 20 28 5b 31 |ilgate.u|l.ie ([1|
|00000050| 33 36 2e 32 30 31 2e 31 | 2e 32 33 5d 29 20 62 79 |36.201.1|.23]) by|
|00000060| 20 65 78 63 68 2d 73 74 | 61 66 66 31 2e 75 6c 2e | exch-st|aff1.ul.|
|00000070| 69 65 20 77 69 74 68 20 | 53 4d 54 50 0a 20 28 4d |ie with |SMTP. (M|
|00000080| 69 63 72 6f 73 6f 66 74 | 20 45 78 63 68 61 6e 67 |icrosoft| Exchang|
|00000090| 65 20 49 6e 74 65 72 6e | 65 74 20 4d 61 69 6c 20 |e Intern|et Mail |
|000000a0| 53 65 72 76 69 63 65 20 | 56 65 72 73 69 6f 6e 20 |Service |Version |
|000000b0| 35 2e 35 2e 31 39 36 30 | 2e 33 29 20 69 64 20 34 |5.5.1960|.3) id 4|
|000000c0| 51 4b 54 31 44 30 30 3b | 0a 20 46 72 69 2c 20 39 |QKT1D00;|. Fri, 9|
|000000d0| 20 4f 63 74 20 31 39 39 | 38 20 30 38 3a 35 38 3a | Oct 199|8 08:58:|
|000000e0| 35 33 20 2b 30 31 30 30 | 0a 52 65 63 65 69 76 65 |53 +0100|.Receive|
|000000f0| 64 3a 20 66 72 6f 6d 20 | 67 61 74 65 6b 65 65 70 |d: from |gatekeep|
|00000100| 65 72 2e 72 65 73 65 61 | 72 63 68 2e 6e 61 74 70 |er.resea|rch.natp|
|00000110| 6f 77 65 72 2e 63 6f 2e | 75 6b 20 62 79 20 6d 61 |ower.co.|uk by ma|
|00000120| 69 6c 67 61 74 65 2e 75 | 6c 2e 69 65 20 77 69 74 |ilgate.u|l.ie wit|
|00000130| 68 20 53 4d 54 50 0a 20 | 28 50 50 29 20 69 64 20 |h SMTP. |(PP) id |
|00000140| 3c 32 35 34 37 30 2d 30 | 40 6d 61 69 6c 67 61 74 |<25470-0|@mailgat|
|00000150| 65 2e 75 6c 2e 69 65 3e | 3b 20 46 72 69 2c 20 39 |e.ul.ie>|; Fri, 9|
|00000160| 20 4f 63 74 20 31 39 39 | 38 20 30 39 3a 31 33 3a | Oct 199|8 09:13:|
|00000170| 35 36 20 2b 30 30 30 30 | 0a 52 65 63 65 69 76 65 |56 +0000|.Receive|
|00000180| 64 3a 20 62 79 20 67 61 | 74 65 6b 65 65 70 65 72 |d: by ga|tekeeper|
|00000190| 2e 72 65 73 65 61 72 63 | 68 2e 6e 61 74 70 6f 77 |.researc|h.natpow|
|000001a0| 65 72 2e 63 6f 2e 75 6b | 20 69 64 20 41 41 31 37 |er.co.uk| id AA17|
|000001b0| 36 39 35 20 28 49 6e 74 | 65 72 4c 6f 63 6b 20 53 |695 (Int|erLock S|
|000001c0| 4d 54 50 0a 20 47 61 74 | 65 77 61 79 20 33 2e 30 |MTP. Gat|eway 3.0|
|000001d0| 20 66 6f 72 20 63 61 6f | 6c 61 6e 2e 6d 63 6e 61 | for cao|lan.mcna|
|000001e0| 6d 61 72 61 40 75 6c 2e | 69 65 29 3b 20 46 72 69 |mara@ul.|ie); Fri|
|000001f0| 2c 20 39 20 4f 63 74 20 | 31 39 39 38 20 30 39 3a |, 9 Oct |1998 09:|
|00000200| 31 33 3a 30 31 20 2b 30 | 31 30 30 0a 52 65 63 65 |13:01 +0|100.Rece|
|00000210| 69 76 65 64 3a 20 62 79 | 20 67 61 74 65 6b 65 65 |ived: by| gatekee|
|00000220| 70 65 72 2e 72 65 73 65 | 61 72 63 68 2e 6e 61 74 |per.rese|arch.nat|
|00000230| 70 6f 77 65 72 2e 63 6f | 2e 75 6b 20 28 50 72 6f |power.co|.uk (Pro|
|00000240| 74 65 63 74 65 64 2d 73 | 69 64 65 20 50 72 6f 78 |tected-s|ide Prox|
|00000250| 79 20 4d 61 69 6c 0a 20 | 41 67 65 6e 74 2d 32 29 |y Mail. |Agent-2)|
|00000260| 3b 20 46 72 69 2c 20 39 | 20 4f 63 74 20 31 39 39 |; Fri, 9| Oct 199|
|00000270| 38 20 30 39 3a 31 33 3a | 30 31 20 2b 30 31 30 30 |8 09:13:|01 +0100|
|00000280| 0a 52 65 63 65 69 76 65 | 64 3a 20 62 79 20 67 61 |.Receive|d: by ga|
|00000290| 74 65 6b 65 65 70 65 72 | 2e 72 65 73 65 61 72 63 |tekeeper|.researc|
|000002a0| 68 2e 6e 61 74 70 6f 77 | 65 72 2e 63 6f 2e 75 6b |h.natpow|er.co.uk|
|000002b0| 20 28 50 72 6f 74 65 63 | 74 65 64 2d 73 69 64 65 | (Protec|ted-side|
|000002c0| 20 50 72 6f 78 79 20 4d | 61 69 6c 0a 20 41 67 65 | Proxy M|ail. Age|
|000002d0| 6e 74 2d 31 29 3b 20 46 | 72 69 2c 20 39 20 4f 63 |nt-1); F|ri, 9 Oc|
|000002e0| 74 20 31 39 39 38 20 30 | 39 3a 31 33 3a 30 31 20 |t 1998 0|9:13:01 |
|000002f0| 2b 30 31 30 30 0a 4d 65 | 73 73 61 67 65 2d 49 44 |+0100.Me|ssage-ID|
|00000300| 3a 20 3c 31 39 39 38 31 | 30 30 39 30 38 31 33 2e |: <19981|0090813.|
|00000310| 41 41 31 37 36 39 35 40 | 67 61 74 65 6b 65 65 70 |AA17695@|gatekeep|
|00000320| 65 72 2e 72 65 73 65 61 | 72 63 68 2e 6e 61 74 70 |er.resea|rch.natp|
|00000330| 6f 77 65 72 2e 63 6f 2e | 75 6b 3e 0a 44 61 74 65 |ower.co.|uk>.Date|
|00000340| 3a 20 46 72 69 2c 20 39 | 20 4f 63 74 20 31 39 39 |: Fri, 9| Oct 199|
|00000350| 38 20 31 30 3a 31 32 3a | 35 38 20 2b 30 31 30 30 |8 10:12:|58 +0100|
|00000360| 0a 4d 49 4d 45 2d 56 65 | 72 73 69 6f 6e 3a 20 31 |.MIME-Ve|rsion: 1|
|00000370| 2e 30 0a 43 6f 6e 74 65 | 6e 74 2d 54 79 70 65 3a |.0.Conte|nt-Type:|
|00000380| 20 74 65 78 74 2f 70 6c | 61 69 6e 3b 20 63 68 61 | text/pl|ain; cha|
|00000390| 72 73 65 74 3d 22 55 53 | 2d 41 53 43 49 49 22 0a |rset="US|-ASCII".|
|000003a0| 58 46 4d 73 74 61 74 75 | 73 3a 20 30 30 30 30 0a |XFMstatu|s: 0000.|
|000003b0| 46 72 6f 6d 3a 20 41 6e | 64 72 65 77 20 53 63 72 |From: An|drew Scr|
|000003c0| 69 76 65 6e 20 3c 61 6e | 64 79 2e 73 63 72 69 76 |iven <an|dy.scriv|
|000003d0| 65 6e 40 72 65 73 65 61 | 72 63 68 2e 6e 61 74 70 |en@resea|rch.natp|
|000003e0| 6f 77 65 72 2e 63 6f 2e | 75 6b 3e 0a 54 6f 3a 20 |ower.co.|uk>.To: |
|000003f0| 46 69 6c 74 65 72 73 20 | 50 72 6f 79 65 63 74 20 |Filters |Proyect |
|00000400| 3c 66 69 6c 74 65 72 73 | 40 63 65 6e 74 61 75 72 |<filters|@centaur|
|00000410| 69 2e 6c 63 69 2e 75 6c | 73 61 2e 6d 78 3e 0a 53 |i.lci.ul|sa.mx>.S|
|00000420| 75 62 6a 65 63 74 3a 20 | 52 45 3a 20 57 68 69 63 |ubject: |RE: Whic|
|00000430| 68 20 73 74 72 65 61 6d | 73 20 61 72 65 20 74 6f |h stream|s are to|
|00000440| 70 6c 65 76 65 6c 20 69 | 6e 20 77 68 69 63 68 20 |plevel i|n which |
|00000450| 74 72 65 65 3f 0a 43 63 | 3a 20 43 61 6f 6c 61 6e |tree?.Cc|: Caolan|
|00000460| 20 4d 63 4e 61 6d 61 72 | 61 20 3c 43 61 6f 6c 61 | McNamar|a <Caola|
|00000470| 6e 2e 4d 63 4e 61 6d 61 | 72 61 40 75 6c 2e 69 65 |n.McNama|ra@ul.ie|
|00000480| 3e 0a 0a 48 69 2c 20 0a | 0a 43 61 6f 6c 61 6e 20 |>..Hi, .|.Caolan |
|00000490| 63 6f 70 69 65 64 20 6d | 65 20 79 6f 75 72 20 65 |copied m|e your e|
|000004a0| 6d 61 69 6c 2e 20 50 65 | 72 68 61 70 73 20 49 20 |mail. Pe|rhaps I |
|000004b0| 63 61 6e 20 65 78 70 6c | 61 69 6e 2e 0a 0a 54 68 |can expl|ain...Th|
|000004c0| 65 20 63 6f 64 65 20 49 | 20 77 72 6f 74 65 20 64 |e code I| wrote d|
|000004d0| 6f 65 73 20 70 61 72 73 | 65 20 74 68 65 20 4f 4c |oes pars|e the OL|
|000004e0| 45 20 74 72 65 65 20 66 | 75 6c 6c 79 20 69 6e 20 |E tree f|ully in |
|000004f0| 69 74 73 20 6f 72 69 67 | 69 6e 61 6c 20 66 6f 72 |its orig|inal for|
|00000500| 6d 2e 20 49 6e 0a 66 61 | 63 74 20 49 20 0a 61 74 |m. In.fa|ct I .at|
|00000510| 74 61 63 68 20 61 20 73 | 6d 61 6c 6c 20 43 20 70 |tach a s|mall C p|
|00000520| 72 6f 67 72 61 6d 2c 20 | 63 61 6c 6c 65 64 20 4f |rogram, |called O|
|00000530| 4c 45 72 65 61 64 2e 63 | 20 77 68 69 63 68 20 70 |LEread.c| which p|
|00000540| 72 69 6e 74 73 20 6f 75 | 74 20 74 68 65 20 66 75 |rints ou|t the fu|
|00000550| 6c 6c 0a 74 72 65 65 20 | 0a 73 74 72 75 63 74 75 |ll.tree |.structu|
|00000560| 72 65 2e 20 0a 0a 43 61 | 6f 6c 61 6e 20 74 65 6c |re. ..Ca|olan tel|
|00000570| 6c 73 20 6d 65 20 68 65 | 20 6f 6e 6c 79 20 6e 65 |ls me he| only ne|
|00000580| 65 64 73 20 74 68 65 20 | 22 74 6f 70 20 6c 65 76 |eds the |"top lev|
|00000590| 65 6c 22 20 65 6e 74 72 | 69 65 73 20 66 72 6f 6d |el" entr|ies from|
|000005a0| 20 74 68 65 20 4f 4c 45 | 20 66 69 6c 65 2c 0a 73 | the OLE| file,.s|
|000005b0| 6f 20 69 6e 20 0a 74 68 | 65 20 63 6f 64 65 20 49 |o in .th|e code I|
|000005c0| 20 73 65 6e 74 20 68 69 | 6d 2c 20 6f 6e 6c 79 20 | sent hi|m, only |
|000005d0| 74 68 6f 73 65 20 65 6e | 74 72 69 65 73 20 61 72 |those en|tries ar|
|000005e0| 65 20 65 78 74 72 61 63 | 74 65 64 2e 20 51 75 65 |e extrac|ted. Que|
|000005f0| 73 74 69 6f 6e 20 69 73 | 20 68 6f 77 0a 74 6f 20 |stion is| how.to |
|00000600| 66 69 6e 64 20 0a 74 68 | 69 73 20 22 74 6f 70 20 |find .th|is "top |
|00000610| 6c 65 76 65 6c 22 20 6c | 69 6e 6b 65 64 20 6c 69 |level" l|inked li|
|00000620| 73 74 3f 20 48 61 76 65 | 20 61 20 6c 6f 6f 6b 20 |st? Have| a look |
|00000630| 61 74 20 74 68 65 20 72 | 65 63 75 72 73 69 76 65 |at the r|ecursive|
|00000640| 20 66 75 6e 63 74 69 6f | 6e 0a 22 75 6e 72 61 76 | functio|n."unrav|
|00000650| 65 6c 22 20 0a 69 6e 20 | 74 68 65 20 43 20 63 6f |el" .in |the C co|
|00000660| 64 65 2e 0a 0a 49 66 20 | 79 6f 75 20 73 74 61 72 |de...If |you star|
|00000670| 74 20 77 69 74 68 20 74 | 68 65 20 6c 69 73 74 20 |t with t|he list |
|00000680| 6f 66 20 70 70 73 20 65 | 6e 74 72 69 65 73 2c 20 |of pps e|ntries, |
|00000690| 6f 6e 65 20 6f 66 20 74 | 68 65 6d 2c 20 75 73 75 |one of t|hem, usu|
|000006a0| 61 6c 6c 79 20 74 68 65 | 0a 66 69 72 73 74 2c 20 |ally the|.first, |
|000006b0| 68 61 73 20 0a 61 20 22 | 74 79 70 65 22 20 6f 66 |has .a "|type" of|
|000006c0| 20 35 20 77 68 69 63 68 | 20 6d 65 61 6e 73 20 52 | 5 which| means R|
|000006d0| 6f 6f 74 2e 20 41 6c 6c | 20 70 70 73 20 65 6e 74 |oot. All| pps ent|
|000006e0| 72 69 65 73 20 68 61 76 | 65 20 70 6f 69 6e 74 65 |ries hav|e pointe|
|000006f0| 72 73 20 74 6f 0a 70 72 | 65 76 69 6f 75 73 2c 20 |rs to.pr|evious, |
|00000700| 0a 6e 65 78 74 20 61 6e | 64 20 64 69 72 65 63 74 |.next an|d direct|
|00000710| 6f 72 79 20 70 70 73 20 | 65 6e 74 69 72 65 73 2e |ory pps |entires.|
|00000720| 20 54 68 65 20 52 6f 6f | 74 20 70 70 73 20 65 6e | The Roo|t pps en|
|00000730| 74 72 79 20 77 69 6c 6c | 20 68 61 76 65 20 61 20 |try will| have a |
|00000740| 64 69 72 65 63 74 6f 72 | 79 0a 65 6e 74 72 79 20 |director|y.entry |
|00000750| 0a 77 68 69 63 68 20 69 | 73 20 65 66 66 65 63 74 |.which i|s effect|
|00000760| 69 76 65 6c 79 20 74 68 | 65 20 22 74 6f 70 22 20 |ively th|e "top" |
|00000770| 6f 66 20 74 68 65 20 74 | 72 65 65 2e 0a 0a 49 66 |of the t|ree...If|
|00000780| 20 79 6f 75 20 73 74 61 | 72 74 20 77 69 74 68 20 | you sta|rt with |
|00000790| 74 68 65 20 70 70 73 20 | 70 6f 69 6e 74 65 64 20 |the pps |pointed |
|000007a0| 74 6f 20 62 79 20 74 68 | 69 73 20 52 6f 6f 74 2d |to by th|is Root-|
|000007b0| 3e 64 69 72 65 63 74 6f | 72 79 2c 20 61 6e 64 20 |>directo|ry, and |
|000007c0| 73 74 61 72 74 0a 74 6f | 20 0a 66 6f 6c 6c 6f 77 |start.to| .follow|
|000007d0| 20 69 74 2c 20 69 74 20 | 77 69 6c 6c 20 75 6e 72 | it, it |will unr|
|000007e0| 61 76 65 6c 20 69 6e 74 | 6f 20 61 20 6c 69 73 74 |avel int|o a list|
|000007f0| 20 6f 66 20 6c 69 6e 6b | 65 64 20 70 70 73 20 65 | of link|ed pps e|
|00000800| 6e 74 72 69 65 73 2e 20 | 48 6f 77 65 76 65 72 2c |ntries. |However,|
|00000810| 0a 74 68 65 20 0a 6c 69 | 73 74 20 77 69 6c 6c 20 |.the .li|st will |
|00000820| 63 6f 6e 73 69 73 74 20 | 6f 66 20 70 72 65 76 69 |consist |of previ|
|00000830| 6f 75 73 20 61 6e 64 20 | 6e 65 78 74 20 72 65 66 |ous and |next ref|
|00000840| 65 72 65 6e 63 65 73 20 | 61 6e 64 20 61 6c 73 6f |erences |and also|
|00000850| 20 73 6f 6d 65 0a 64 69 | 72 65 63 74 6f 72 79 20 | some.di|rectory |
|00000860| 0a 65 6e 74 72 69 65 73 | 2e 20 0a 0a 49 66 20 61 |.entries|. ..If a|
|00000870| 6c 6c 20 79 6f 75 20 77 | 61 6e 74 20 69 73 20 74 |ll you w|ant is t|
|00000880| 68 65 20 22 74 6f 70 20 | 6c 65 76 65 6c 22 20 6c |he "top |level" l|
|00000890| 69 73 74 2c 20 79 6f 75 | 20 73 69 6d 70 6c 79 20 |ist, you| simply |
|000008a0| 44 4f 20 4e 4f 54 20 66 | 6f 6c 6c 6f 77 20 74 68 |DO NOT f|ollow th|
|000008b0| 65 20 0a 64 69 72 65 63 | 74 6f 72 79 20 65 6e 74 |e .direc|tory ent|
|000008c0| 72 69 65 73 2e 0a 0a 54 | 68 65 20 63 6f 64 65 20 |ries...T|he code |
|000008d0| 49 20 61 74 74 61 63 68 | 20 44 4f 45 53 20 66 6f |I attach| DOES fo|
|000008e0| 6c 6c 6f 77 20 74 68 65 | 20 64 69 72 65 63 74 6f |llow the| directo|
|000008f0| 72 79 20 65 6e 74 72 69 | 65 73 20 6a 75 73 74 20 |ry entri|es just |
|00000900| 74 6f 20 70 72 69 6e 74 | 20 6f 75 74 0a 74 68 65 |to print| out.the|
|00000910| 20 0a 74 72 65 65 2c 20 | 62 75 74 20 69 74 20 6b | .tree, |but it k|
|00000920| 65 65 70 73 20 74 72 61 | 63 6b 20 6f 66 20 77 68 |eeps tra|ck of wh|
|00000930| 61 74 20 22 6c 65 76 65 | 6c 22 20 6f 66 20 6e 65 |at "leve|l" of ne|
|00000940| 73 74 69 6e 67 20 79 6f | 75 20 61 72 65 20 61 74 |sting yo|u are at|
|00000950| 2e 0a 0a 53 6f 20 61 20 | 74 79 70 69 63 61 6c 20 |...So a |typical |
|00000960| 4f 4c 45 20 64 6f 63 20 | 6d 61 79 20 6c 6f 6f 6b |OLE doc |may look|
|00000970| 20 6c 69 6b 65 20 74 68 | 69 73 0a 0a 20 20 20 20 | like th|is.. |
|00000980| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 52 6f | | Ro|
|00000990| 6f 74 0a 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |ot. | |
|000009a0| 20 20 20 20 20 20 7c 0a | 20 20 20 20 20 20 20 20 | |.| |
|000009b0| 20 20 20 20 20 20 20 20 | 20 20 20 33 0a 20 20 20 | | 3. |
|000009c0| 20 20 20 20 20 20 20 20 | 20 20 20 20 20 20 20 2f | | /|
|000009d0| 20 5c 0a 20 20 20 20 20 | 20 20 20 20 20 20 20 20 | \. | |
|000009e0| 20 20 20 20 35 20 20 20 | 36 2d 20 64 69 72 2d 20 | 5 |6- dir- |
|000009f0| 38 0a 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |8. | |
|00000a00| 20 20 2f 20 5c 20 20 20 | 5c 20 20 20 20 20 2f 20 | / \ |\ / |
|00000a10| 5c 0a 20 20 20 20 20 20 | 20 20 20 20 20 20 20 20 |\. | |
|00000a20| 20 39 20 20 20 38 20 20 | 20 31 30 20 20 34 20 20 | 9 8 | 10 4 |
|00000a30| 20 32 0a 20 20 20 20 20 | 20 20 20 20 20 20 0a 0a | 2. | ..|
|00000a40| 74 68 65 20 74 6f 70 20 | 6c 65 76 65 6c 20 6c 69 |the top |level li|
|00000a50| 73 74 20 77 6f 75 6c 64 | 20 62 65 0a 20 20 20 20 |st would| be. |
|00000a60| 20 20 20 39 2d 35 2d 38 | 2d 33 2d 36 2d 31 30 0a | 9-5-8|-3-6-10.|
|00000a70| 20 20 61 6e 64 20 79 6f | 75 20 69 67 6e 6f 72 65 | and yo|u ignore|
|00000a80| 20 34 2d 38 2d 32 20 61 | 73 20 74 68 69 73 20 69 | 4-8-2 a|s this i|
|00000a90| 73 20 22 6e 65 73 74 65 | 64 22 20 75 6e 64 65 72 |s "neste|d" under|
|00000aa0| 20 36 2e 0a 0a 48 61 70 | 70 79 3f 0a 0a 41 6e 64 | 6...Hap|py?..And|
|00000ab0| 72 65 77 0a 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |rew.----|--------|
|00000ac0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000ad0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000ae0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000af0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 0a 41 6e 64 72 |--------|---.Andr|
|00000b00| 65 77 20 53 63 72 69 76 | 65 6e 0a 52 65 73 65 61 |ew Scriv|en.Resea|
|00000b10| 72 63 68 20 61 6e 64 20 | 45 6e 67 69 6e 65 65 72 |rch and |Engineer|
|00000b20| 69 6e 67 0a 45 6c 65 63 | 74 72 6f 6e 20 42 75 69 |ing.Elec|tron Bui|
|00000b30| 6c 64 69 6e 67 2c 20 57 | 69 6e 64 6d 69 6c 6c 20 |lding, W|indmill |
|00000b40| 48 69 6c 6c 2c 20 57 68 | 69 74 65 68 69 6c 6c 20 |Hill, Wh|itehill |
|00000b50| 57 61 79 2c 20 53 77 69 | 6e 64 6f 6e 2c 20 53 4e |Way, Swi|ndon, SN|
|00000b60| 35 20 36 50 42 2c 20 55 | 4b 0a 50 68 6f 6e 65 20 |5 6PB, U|K.Phone |
|00000b70| 28 34 34 29 20 31 37 39 | 33 20 38 39 36 32 30 36 |(44) 179|3 896206|
|00000b80| 2c 20 46 61 78 20 28 34 | 34 29 20 31 37 39 33 20 |, Fax (4|4) 1793 |
|00000b90| 38 39 36 32 35 31 0a 2d | 2d 2d 2d 2d 2d 2d 2d 2d |896251.-|--------|
|00000ba0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000bb0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000bc0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 2d 2d |--------|--------|
|00000bd0| 2d 2d 2d 2d 2d 2d 2d 2d | 2d 2d 2d 2d 2d 2d 0a 0a |--------|------..|
|00000be0| 23 69 6e 63 6c 75 64 65 | 20 3c 73 74 64 69 6f 2e |#include| <stdio.|
|00000bf0| 68 3e 0a 23 69 6e 63 6c | 75 64 65 20 3c 73 74 64 |h>.#incl|ude <std|
|00000c00| 61 72 67 2e 68 3e 0a 23 | 69 6e 63 6c 75 64 65 20 |arg.h>.#|include |
|00000c10| 3c 73 74 64 6c 69 62 2e | 68 3e 0a 23 69 6e 63 6c |<stdlib.|h>.#incl|
|00000c20| 75 64 65 20 3c 73 74 72 | 69 6e 67 2e 68 3e 0a 23 |ude <str|ing.h>.#|
|00000c30| 69 6e 63 6c 75 64 65 20 | 3c 6d 61 6c 6c 6f 63 2e |include |<malloc.|
|00000c40| 68 3e 0a 23 69 6e 63 6c | 75 64 65 20 3c 63 74 79 |h>.#incl|ude <cty|
|00000c50| 70 65 2e 68 3e 0a 23 69 | 6e 63 6c 75 64 65 20 3c |pe.h>.#i|nclude <|
|00000c60| 73 79 73 2f 74 79 70 65 | 73 2e 68 3e 0a 23 69 6e |sys/type|s.h>.#in|
|00000c70| 63 6c 75 64 65 20 3c 61 | 73 73 65 72 74 2e 68 3e |clude <a|ssert.h>|
|00000c80| 0a 0a 23 64 65 66 69 6e | 65 20 4d 49 4e 28 61 2c |..#defin|e MIN(a,|
|00000c90| 62 29 20 28 28 61 29 3c | 28 62 29 20 3f 20 28 61 |b) ((a)<|(b) ? (a|
|00000ca0| 29 20 3a 20 28 62 29 29 | 0a 23 64 65 66 69 6e 65 |) : (b))|.#define|
|00000cb0| 20 4d 41 58 42 4c 4f 43 | 4b 53 20 36 34 0a 0a 73 | MAXBLOC|KS 64..s|
|00000cc0| 74 72 75 63 74 20 70 70 | 73 5f 62 6c 6f 63 6b 0a |truct pp|s_block.|
|00000cd0| 20 20 7b 0a 20 20 63 68 | 61 72 20 6e 61 6d 65 5b | {. ch|ar name[|
|00000ce0| 36 34 5d 3b 0a 20 20 69 | 6e 74 20 6e 73 69 7a 65 |64];. i|nt nsize|
|00000cf0| 3b 0a 20 20 63 68 61 72 | 20 74 79 70 65 3b 0a 20 |;. char| type;. |
|00000d00| 20 73 74 72 75 63 74 20 | 70 70 73 5f 62 6c 6f 63 | struct |pps_bloc|
|00000d10| 6b 20 2a 70 72 65 76 69 | 6f 75 73 3b 0a 20 20 73 |k *previ|ous;. s|
|00000d20| 74 72 75 63 74 20 70 70 | 73 5f 62 6c 6f 63 6b 20 |truct pp|s_block |
|00000d30| 2a 6e 65 78 74 3b 0a 20 | 20 73 74 72 75 63 74 20 |*next;. | struct |
|00000d40| 70 70 73 5f 62 6c 6f 63 | 6b 20 2a 64 69 72 65 63 |pps_bloc|k *direc|
|00000d50| 74 6f 72 79 3b 0a 20 20 | 6c 6f 6e 67 20 69 6e 74 |tory;. |long int|
|00000d60| 20 73 74 61 72 74 3b 0a | 20 20 6c 6f 6e 67 20 69 | start;.| long i|
|00000d70| 6e 74 20 73 69 7a 65 3b | 0a 20 20 69 6e 74 20 6c |nt size;|. int l|
|00000d80| 65 76 65 6c 3b 0a 20 20 | 69 6e 74 20 69 6e 64 65 |evel;. |int inde|
|00000d90| 78 3b 0a 20 20 7d 3b 0a | 0a 74 79 70 65 64 65 66 |x;. };.|.typedef|
|00000da0| 20 73 74 72 75 63 74 20 | 70 70 73 5f 62 6c 6f 63 | struct |pps_bloc|
|00000db0| 6b 20 70 70 73 5f 65 6e | 74 72 79 3b 0a 0a 63 68 |k pps_en|try;..ch|
|00000dc0| 61 72 20 2a 70 70 73 5f | 74 79 70 65 5b 5d 3d 7b |ar *pps_|type[]={|
|00000dd0| 22 22 2c 22 44 49 52 20 | 22 2c 22 46 49 4c 45 22 |"","DIR |","FILE"|
|00000de0| 2c 22 22 2c 22 22 2c 22 | 52 4f 4f 54 22 7d 3b 0a |,"","","|ROOT"};.|
|00000df0| 0a 2f 2a 20 52 6f 75 74 | 69 6e 65 20 70 72 6f 74 |./* Rout|ine prot|
|00000e00| 6f 74 79 70 65 73 20 2a | 2f 0a 75 6e 73 69 67 6e |otypes *|/.unsign|
|00000e10| 65 64 20 73 68 6f 72 74 | 20 69 6e 74 20 53 68 6f |ed short| int Sho|
|00000e20| 72 74 49 6e 74 28 75 6e | 73 69 67 6e 65 64 20 63 |rtInt(un|signed c|
|00000e30| 68 61 72 2a 20 61 72 72 | 61 79 29 3b 0a 75 6e 73 |har* arr|ay);.uns|
|00000e40| 69 67 6e 65 64 20 6c 6f | 6e 67 20 69 6e 74 20 4c |igned lo|ng int L|
|00000e50| 6f 6e 67 49 6e 74 28 75 | 6e 73 69 67 6e 65 64 20 |ongInt(u|nsigned |
|00000e60| 63 68 61 72 2a 20 61 72 | 72 61 79 29 3b 0a 0a 75 |char* ar|ray);..u|
|00000e70| 6e 73 69 67 6e 65 64 20 | 73 68 6f 72 74 20 69 6e |nsigned |short in|
|00000e80| 74 20 53 68 6f 72 74 49 | 6e 74 28 75 6e 73 69 67 |t ShortI|nt(unsig|
|00000e90| 6e 65 64 20 63 68 61 72 | 2a 20 61 72 72 61 79 29 |ned char|* array)|
|00000ea0| 0a 7b 0a 75 6e 69 6f 6e | 20 74 77 6f 5f 62 79 74 |.{.union| two_byt|
|00000eb0| 65 20 7b 0a 20 75 6e 73 | 69 67 6e 65 64 20 73 68 |e {. uns|igned sh|
|00000ec0| 6f 72 74 20 69 6e 74 20 | 6e 75 6d 3b 0a 20 63 68 |ort int |num;. ch|
|00000ed0| 61 72 20 20 63 68 5b 32 | 5d 3b 0a 20 7d 20 53 68 |ar ch[2|];. } Sh|
|00000ee0| 6f 72 74 3b 0a 0a 23 69 | 66 6e 64 65 66 20 49 4e |ort;..#i|fndef IN|
|00000ef0| 54 45 4c 0a 20 20 53 68 | 6f 72 74 2e 63 68 5b 31 |TEL. Sh|ort.ch[1|
|00000f00| 5d 20 3d 20 2a 61 72 72 | 61 79 2b 2b 3b 0a 20 20 |] = *arr|ay++;. |
|00000f10| 53 68 6f 72 74 2e 63 68 | 5b 30 5d 20 3d 20 2a 61 |Short.ch|[0] = *a|
|00000f20| 72 72 61 79 3b 0a 23 65 | 6c 73 65 0a 20 20 53 68 |rray;.#e|lse. Sh|
|00000f30| 6f 72 74 2e 63 68 5b 30 | 5d 20 3d 20 2a 61 72 72 |ort.ch[0|] = *arr|
|00000f40| 61 79 2b 2b 3b 0a 20 20 | 53 68 6f 72 74 2e 63 68 |ay++;. |Short.ch|
|00000f50| 5b 31 5d 20 3d 20 2a 61 | 72 72 61 79 3b 0a 23 65 |[1] = *a|rray;.#e|
|00000f60| 6e 64 69 66 0a 72 65 74 | 75 72 6e 20 53 68 6f 72 |ndif.ret|urn Shor|
|00000f70| 74 2e 6e 75 6d 3b 0a 0a | 7d 0a 0a 75 6e 73 69 67 |t.num;..|}..unsig|
|00000f80| 6e 65 64 20 6c 6f 6e 67 | 20 69 6e 74 20 4c 6f 6e |ned long| int Lon|
|00000f90| 67 49 6e 74 28 75 6e 73 | 69 67 6e 65 64 20 63 68 |gInt(uns|igned ch|
|00000fa0| 61 72 2a 20 61 72 72 61 | 79 29 0a 7b 0a 75 6e 69 |ar* arra|y).{.uni|
|00000fb0| 6f 6e 20 66 6f 75 72 5f | 62 79 74 65 20 7b 0a 20 |on four_|byte {. |
|00000fc0| 75 6e 73 69 67 6e 65 64 | 20 6c 6f 6e 67 20 69 6e |unsigned| long in|
|00000fd0| 74 20 6e 75 6d 3b 0a 20 | 63 68 61 72 20 20 63 68 |t num;. |char ch|
|00000fe0| 5b 34 5d 3b 0a 20 7d 20 | 4c 6f 6e 67 3b 0a 0a 23 |[4];. } |Long;..#|
|00000ff0| 69 66 6e 64 65 66 20 49 | 4e 54 45 4c 0a 20 20 4c |ifndef I|NTEL. L|
|00001000| 6f 6e 67 2e 63 68 5b 33 | 5d 20 3d 20 2a 61 72 72 |ong.ch[3|] = *arr|
|00001010| 61 79 2b 2b 3b 0a 20 20 | 4c 6f 6e 67 2e 63 68 5b |ay++;. |Long.ch[|
|00001020| 32 5d 20 3d 20 2a 61 72 | 72 61 79 2b 2b 3b 0a 20 |2] = *ar|ray++;. |
|00001030| 20 4c 6f 6e 67 2e 63 68 | 5b 31 5d 20 3d 20 2a 61 | Long.ch|[1] = *a|
|00001040| 72 72 61 79 2b 2b 3b 0a | 20 20 4c 6f 6e 67 2e 63 |rray++;.| Long.c|
|00001050| 68 5b 30 5d 20 3d 20 2a | 61 72 72 61 79 3b 0a 23 |h[0] = *|array;.#|
|00001060| 65 6c 73 65 0a 20 20 4c | 6f 6e 67 2e 63 68 5b 30 |else. L|ong.ch[0|
|00001070| 5d 20 3d 20 2a 61 72 72 | 61 79 2b 2b 3b 0a 20 20 |] = *arr|ay++;. |
|00001080| 4c 6f 6e 67 2e 63 68 5b | 31 5d 20 3d 20 2a 61 72 |Long.ch[|1] = *ar|
|00001090| 72 61 79 2b 2b 3b 0a 20 | 20 4c 6f 6e 67 2e 63 68 |ray++;. | Long.ch|
|000010a0| 5b 32 5d 20 3d 20 2a 61 | 72 72 61 79 2b 2b 3b 0a |[2] = *a|rray++;.|
|000010b0| 20 20 4c 6f 6e 67 2e 63 | 68 5b 33 5d 20 3d 20 2a | Long.c|h[3] = *|
|000010c0| 61 72 72 61 79 3b 0a 23 | 65 6e 64 69 66 0a 72 65 |array;.#|endif.re|
|000010d0| 74 75 72 6e 20 4c 6f 6e | 67 2e 6e 75 6d 3b 0a 7d |turn Lon|g.num;.}|
|000010e0| 0a 0a 2f 2a 20 72 65 63 | 75 72 73 65 20 74 6f 20 |../* rec|urse to |
|000010f0| 66 6f 6c 6c 6f 77 20 66 | 6f 72 77 61 72 64 2f 62 |follow f|orward/b|
|00001100| 61 63 6b 77 61 72 64 20 | 6c 69 73 74 20 6f 66 20 |ackward |list of |
|00001110| 72 6f 6f 74 20 70 70 73 | 27 73 20 2a 2f 0a 76 6f |root pps|'s */.vo|
|00001120| 69 64 20 75 6e 72 61 76 | 65 6c 28 70 70 73 5f 65 |id unrav|el(pps_e|
|00001130| 6e 74 72 79 20 2a 70 70 | 73 5f 6e 6f 64 65 2c 20 |ntry *pp|s_node, |
|00001140| 69 6e 74 20 6c 65 76 65 | 6c 29 0a 7b 0a 20 20 69 |int leve|l).{. i|
|00001150| 66 28 70 70 73 5f 6e 6f | 64 65 2d 3e 6e 73 69 7a |f(pps_no|de->nsiz|
|00001160| 65 20 3d 3d 30 29 20 72 | 65 74 75 72 6e 3b 0a 20 |e ==0) r|eturn;. |
|00001170| 20 69 66 28 70 70 73 5f | 6e 6f 64 65 2d 3e 70 72 | if(pps_|node->pr|
|00001180| 65 76 69 6f 75 73 20 21 | 3d 20 4e 55 4c 4c 29 20 |evious !|= NULL) |
|00001190| 75 6e 72 61 76 65 6c 28 | 70 70 73 5f 6e 6f 64 65 |unravel(|pps_node|
|000011a0| 2d 3e 70 72 65 76 69 6f | 75 73 2c 6c 65 76 65 6c |->previo|us,level|
|000011b0| 29 3b 0a 20 20 70 70 73 | 5f 6e 6f 64 65 2d 3e 6c |);. pps|_node->l|
|000011c0| 65 76 65 6c 20 3d 20 6c | 65 76 65 6c 3b 0a 20 20 |evel = l|evel;. |
|000011d0| 70 72 69 6e 74 66 28 22 | 50 50 53 20 25 73 3a 20 |printf("|PPS %s: |
|000011e0| 25 2a 78 3a 20 2d 3e 0a | 25 73 5c 6e 22 2c 70 70 |%*x: ->.|%s\n",pp|
|000011f0| 73 5f 74 79 70 65 5b 70 | 70 73 5f 6e 6f 64 65 2d |s_type[p|ps_node-|
|00001200| 3e 74 79 70 65 5d 2c 6c | 65 76 65 6c 2a 33 2c 70 |>type],l|evel*3,p|
|00001210| 70 73 5f 6e 6f 64 65 2d | 3e 0a 69 6e 64 65 78 2c |ps_node-|>.index,|
|00001220| 70 70 73 5f 6e 6f 64 65 | 2d 3e 6e 61 6d 65 29 3b |pps_node|->name);|
|00001230| 0a 20 20 69 66 28 70 70 | 73 5f 6e 6f 64 65 2d 3e |. if(pp|s_node->|
|00001240| 64 69 72 65 63 74 6f 72 | 79 20 21 3d 20 4e 55 4c |director|y != NUL|
|00001250| 4c 29 20 75 6e 72 61 76 | 65 6c 28 70 70 73 5f 6e |L) unrav|el(pps_n|
|00001260| 6f 64 65 2d 3e 64 69 72 | 65 63 74 6f 72 79 2c 6c |ode->dir|ectory,l|
|00001270| 65 76 65 6c 2b 31 29 3b | 0a 20 20 69 66 28 70 70 |evel+1);|. if(pp|
|00001280| 73 5f 6e 6f 64 65 2d 3e | 6e 65 78 74 20 21 3d 20 |s_node->|next != |
|00001290| 4e 55 4c 4c 29 20 75 6e | 72 61 76 65 6c 28 70 70 |NULL) un|ravel(pp|
|000012a0| 73 5f 6e 6f 64 65 2d 3e | 6e 65 78 74 2c 6c 65 76 |s_node->|next,lev|
|000012b0| 65 6c 29 3b 0a 7d 0a 0a | 69 6e 74 20 6d 61 69 6e |el);.}..|int main|
|000012c0| 28 69 6e 74 20 61 72 67 | 63 2c 20 63 68 61 72 20 |(int arg|c, char |
|000012d0| 2a 2a 61 72 67 76 29 0a | 7b 0a 20 20 46 49 4c 45 |**argv).|{. FILE|
|000012e0| 20 2a 69 6e 70 75 74 3d | 4e 55 4c 4c 3b 0a 20 20 | *input=|NULL;. |
|000012f0| 46 49 4c 45 20 2a 4f 4c | 45 66 69 6c 65 3d 4e 55 |FILE *OL|Efile=NU|
|00001300| 4c 4c 3b 0a 20 20 46 49 | 4c 45 20 2a 73 62 66 69 |LL;. FI|LE *sbfi|
|00001310| 6c 65 3d 4e 55 4c 4c 3b | 0a 20 20 46 49 4c 45 20 |le=NULL;|. FILE |
|00001320| 2a 69 6e 66 69 6c 65 3d | 4e 55 4c 4c 3b 0a 20 20 |*infile=|NULL;. |
|00001330| 63 68 61 72 20 54 61 72 | 67 65 74 5b 36 34 5d 3b |char Tar|get[64];|
|00001340| 0a 20 20 69 6e 74 20 64 | 65 62 75 67 3d 30 2c 20 |. int d|ebug=0, |
|00001350| 42 6c 6f 63 6b 53 69 7a | 65 3d 30 2c 4f 66 66 73 |BlockSiz|e=0,Offs|
|00001360| 65 74 3d 30 3b 0a 20 20 | 69 6e 74 20 63 2c 69 2c |et=0;. |int c,i,|
|00001370| 6a 2c 6b 2c 6c 65 6e 2c | 62 79 74 65 73 3b 0a 20 |j,k,len,|bytes;. |
|00001380| 20 63 68 61 72 20 2a 73 | 2c 2a 70 2c 2a 74 3b 0a | char *s|,*p,*t;.|
|00001390| 20 20 63 68 61 72 20 2a | 42 6c 6f 63 6b 2c 2a 42 | char *|Block,*B|
|000013a0| 44 65 70 6f 74 2c 2a 53 | 44 65 70 6f 74 2c 2a 44 |Depot,*S|Depot,*D|
|000013b0| 65 70 6f 74 2c 2a 52 6f | 6f 74 3b 0a 20 20 63 68 |epot,*Ro|ot;. ch|
|000013c0| 61 72 20 4e 61 6d 65 5b | 36 34 5d 3b 0a 20 20 75 |ar Name[|64];. u|
|000013d0| 6e 73 69 67 6e 65 64 20 | 6c 6f 6e 67 20 69 6e 74 |nsigned |long int|
|000013e0| 20 46 69 6c 65 50 6f 73 | 3d 30 78 30 30 30 30 30 | FilePos|=0x00000|
|000013f0| 30 30 30 3b 0a 20 20 6c | 6f 6e 67 20 69 6e 74 20 |000;. l|ong int |
|00001400| 6e 75 6d 5f 62 62 64 5f | 62 6c 6f 63 6b 73 3b 0a |num_bbd_|blocks;.|
|00001410| 20 20 6c 6f 6e 67 20 69 | 6e 74 20 72 6f 6f 74 5f | long i|nt root_|
|00001420| 6c 69 73 74 5b 4d 41 58 | 42 4c 4f 43 4b 53 5d 2c |list[MAX|BLOCKS],|
|00001430| 20 73 62 64 5f 6c 69 73 | 74 5b 4d 41 58 42 4c 4f | sbd_lis|t[MAXBLO|
|00001440| 43 4b 53 5d 3b 0a 20 20 | 6c 6f 6e 67 20 69 6e 74 |CKS];. |long int|
|00001450| 20 70 70 73 5f 73 69 7a | 65 2c 70 70 73 5f 73 74 | pps_siz|e,pps_st|
|00001460| 61 72 74 3d 2d 31 3b 0a | 20 20 6c 6f 6e 67 20 69 |art=-1;.| long i|
|00001470| 6e 74 20 6c 69 6e 6b 74 | 6f 3b 0a 20 20 69 6e 74 |nt linkt|o;. int|
|00001480| 20 72 6f 6f 74 5f 65 6e | 74 72 79 3b 0a 20 20 70 | root_en|try;. p|
|00001490| 70 73 5f 65 6e 74 72 79 | 20 2a 2a 70 70 73 5f 6c |ps_entry| **pps_l|
|000014a0| 69 73 74 3b 0a 0a 20 20 | 69 66 28 61 72 67 63 20 |ist;.. |if(argc |
|000014b0| 3c 20 32 29 20 7b 0a 20 | 20 20 20 66 70 72 69 6e |< 2) {. | fprin|
|000014c0| 74 66 28 73 74 64 65 72 | 72 2c 22 4e 6f 20 69 6e |tf(stder|r,"No in|
|000014d0| 70 75 74 20 66 69 6c 65 | 20 6e 61 6d 65 5c 6e 22 |put file| name\n"|
|000014e0| 29 3b 0a 20 20 20 20 65 | 78 69 74 20 28 31 32 29 |);. e|xit (12)|
|000014f0| 3b 0a 20 20 7d 0a 20 20 | 66 70 72 69 6e 74 66 28 |;. }. |fprintf(|
|00001500| 73 74 64 65 72 72 2c 22 | 46 69 6c 65 20 67 69 76 |stderr,"|File giv|
|00001510| 65 6e 20 77 61 73 20 25 | 73 5c 6e 22 2c 61 72 67 |en was %|s\n",arg|
|00001520| 76 5b 31 5d 29 3b 0a 20 | 20 69 6e 70 75 74 20 3d |v[1]);. | input =|
|00001530| 20 66 6f 70 65 6e 28 61 | 72 67 76 5b 31 5d 2c 20 | fopen(a|rgv[1], |
|00001540| 22 72 62 22 29 3b 0a 20 | 20 69 66 28 69 6e 70 75 |"rb");. | if(inpu|
|00001550| 74 3d 3d 4e 55 4c 4c 29 | 20 7b 0a 20 20 20 20 66 |t==NULL)| {. f|
|00001560| 70 72 69 6e 74 66 28 73 | 74 64 65 72 72 2c 22 45 |printf(s|tderr,"E|
|00001570| 72 72 6f 72 20 6f 70 65 | 6e 69 6e 67 20 66 69 6c |rror ope|ning fil|
|00001580| 65 20 25 73 5c 6e 22 2c | 61 72 67 76 5b 31 5d 29 |e %s\n",|argv[1])|
|00001590| 3b 0a 20 20 20 20 65 78 | 69 74 20 28 31 32 29 3b |;. ex|it (12);|
|000015a0| 0a 20 20 7d 0a 20 20 69 | 66 28 61 72 67 63 20 3c |. }. i|f(argc <|
|000015b0| 20 33 29 20 7b 0a 20 20 | 20 20 66 70 72 69 6e 74 | 3) {. | fprint|
|000015c0| 66 28 73 74 64 65 72 72 | 2c 22 4c 69 73 74 69 6e |f(stderr|,"Listin|
|000015d0| 67 20 63 6f 6e 74 65 6e | 74 73 5c 6e 22 29 3b 0a |g conten|ts\n");.|
|000015e0| 20 20 20 20 73 74 72 6e | 63 70 79 28 54 61 72 67 | strn|cpy(Targ|
|000015f0| 65 74 2c 22 55 6e 4c 69 | 4b 65 4c 79 22 2c 38 29 |et,"UnLi|KeLy",8)|
|00001600| 3b 0a 20 20 7d 20 65 6c | 73 65 20 7b 0a 20 20 20 |;. } el|se {. |
|00001610| 20 73 74 72 6e 63 70 79 | 28 54 61 72 67 65 74 2c | strncpy|(Target,|
|00001620| 61 72 67 76 5b 32 5d 2c | 36 34 29 3b 0a 20 20 20 |argv[2],|64);. |
|00001630| 20 66 70 72 69 6e 74 66 | 28 73 74 64 65 72 72 2c | fprintf|(stderr,|
|00001640| 22 45 78 74 72 61 63 74 | 69 6e 67 20 25 73 2e 2e |"Extract|ing %s..|
|00001650| 2e 5c 6e 22 2c 54 61 72 | 67 65 74 29 3b 0a 20 20 |.\n",Tar|get);. |
|00001660| 7d 0a 0a 20 20 2f 2a 20 | 70 65 65 6b 20 69 6e 74 |}.. /* |peek int|
|00001670| 6f 20 66 69 6c 65 20 74 | 6f 20 67 75 65 73 73 20 |o file t|o guess |
|00001680| 66 69 6c 65 20 74 79 70 | 65 20 2a 2f 0a 20 20 63 |file typ|e */. c|
|00001690| 3d 67 65 74 63 28 69 6e | 70 75 74 29 3b 0a 20 20 |=getc(in|put);. |
|000016a0| 75 6e 67 65 74 63 28 63 | 2c 69 6e 70 75 74 29 3b |ungetc(c|,input);|
|000016b0| 0a 0a 20 20 69 66 28 69 | 73 70 72 69 6e 74 28 63 |.. if(i|sprint(c|
|000016c0| 29 29 20 7b 0a 20 20 20 | 20 20 66 70 72 69 6e 74 |)) {. | fprint|
|000016d0| 66 28 73 74 64 65 72 72 | 2c 22 46 69 6c 65 20 6c |f(stderr|,"File l|
|000016e0| 6f 6f 6b 73 20 6c 69 6b | 65 20 61 20 70 6c 61 69 |ooks lik|e a plai|
|000016f0| 6e 20 74 65 78 74 20 66 | 69 6c 65 2e 5c 6e 22 29 |n text f|ile.\n")|
|00001700| 3b 0a 20 20 20 20 20 72 | 65 74 75 72 6e 20 38 3b |;. r|eturn 8;|
|00001710| 0a 20 20 2f 2a 20 63 68 | 65 63 6b 20 66 6f 72 20 |. /* ch|eck for |
|00001720| 4d 53 20 4f 4c 45 20 77 | 72 61 70 70 65 72 20 2a |MS OLE w|rapper *|
|00001730| 2f 0a 20 20 7d 20 65 6c | 73 65 20 69 66 28 63 3d |/. } el|se if(c=|
|00001740| 3d 30 78 64 30 29 20 7b | 0a 20 20 20 20 20 42 6c |=0xd0) {|. Bl|
|00001750| 6f 63 6b 20 3d 20 6d 61 | 6c 6c 6f 63 28 35 31 32 |ock = ma|lloc(512|
|00001760| 29 3b 0a 20 20 20 20 20 | 2f 2a 20 72 65 61 64 20 |);. |/* read |
|00001770| 68 65 61 64 65 72 20 62 | 6c 6f 63 6b 20 2a 2f 0a |header b|lock */.|
|00001780| 20 20 20 20 20 69 66 28 | 66 72 65 61 64 28 42 6c | if(|fread(Bl|
|00001790| 6f 63 6b 2c 35 31 32 2c | 31 2c 69 6e 70 75 74 29 |ock,512,|1,input)|
|000017a0| 21 3d 31 29 20 7b 0a 20 | 20 20 20 20 20 20 66 70 |!=1) {. | fp|
|000017b0| 72 69 6e 74 66 28 73 74 | 64 65 72 72 2c 22 31 20 |rintf(st|derr,"1 |
|000017c0| 3d 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3e 20 49 6e 70 |========|===> Inp|
|000017d0| 75 74 20 66 69 6c 65 20 | 68 61 73 20 66 61 75 6c |ut file |has faul|
|000017e0| 74 79 20 4f 4c 45 0a 66 | 6f 72 6d 61 74 5c 6e 22 |ty OLE.f|ormat\n"|
|000017f0| 29 3b 0a 20 20 20 20 20 | 20 20 20 65 78 69 74 20 |);. | exit |
|00001800| 28 35 29 3b 0a 20 20 20 | 20 20 7d 0a 20 20 20 20 |(5);. | }. |
|00001810| 20 6e 75 6d 5f 62 62 64 | 5f 62 6c 6f 63 6b 73 3d | num_bbd|_blocks=|
|00001820| 4c 6f 6e 67 49 6e 74 28 | 42 6c 6f 63 6b 2b 30 78 |LongInt(|Block+0x|
|00001830| 32 63 29 3b 0a 20 20 20 | 20 20 42 44 65 70 6f 74 |2c);. | BDepot|
|00001840| 20 3d 20 6d 61 6c 6c 6f | 63 28 35 31 32 2a 6e 75 | = mallo|c(512*nu|
|00001850| 6d 5f 62 62 64 5f 62 6c | 6f 63 6b 73 29 3b 0a 20 |m_bbd_bl|ocks);. |
|00001860| 20 20 20 20 73 20 3d 20 | 42 44 65 70 6f 74 3b 0a | s = |BDepot;.|
|00001870| 20 20 20 20 20 72 6f 6f | 74 5f 6c 69 73 74 5b 30 | roo|t_list[0|
|00001880| 5d 3d 4c 6f 6e 67 49 6e | 74 28 42 6c 6f 63 6b 2b |]=LongIn|t(Block+|
|00001890| 30 78 33 30 29 3b 0a 20 | 20 20 20 20 73 62 64 5f |0x30);. | sbd_|
|000018a0| 6c 69 73 74 5b 30 5d 3d | 4c 6f 6e 67 49 6e 74 28 |list[0]=|LongInt(|
|000018b0| 42 6c 6f 63 6b 2b 30 78 | 33 63 29 3b 0a 20 20 20 |Block+0x|3c);. |
|000018c0| 20 20 69 66 28 64 65 62 | 75 67 29 20 66 70 72 69 | if(deb|ug) fpri|
|000018d0| 6e 74 66 28 73 74 64 65 | 72 72 2c 22 6e 75 6d 5f |ntf(stde|rr,"num_|
|000018e0| 62 62 64 5f 62 6c 6f 63 | 6b 73 20 25 6c 64 2c 20 |bbd_bloc|ks %ld, |
|000018f0| 72 6f 6f 74 20 73 74 61 | 72 74 20 25 6c 64 2c 20 |root sta|rt %ld, |
|00001900| 73 62 64 0a 73 74 61 72 | 74 20 0a 25 6c 64 5c 6e |sbd.star|t .%ld\n|
|00001910| 22 2c 6e 75 6d 5f 62 62 | 64 5f 62 6c 6f 63 6b 73 |",num_bb|d_blocks|
|00001920| 2c 72 6f 6f 74 5f 6c 69 | 73 74 5b 30 5d 2c 73 62 |,root_li|st[0],sb|
|00001930| 64 5f 6c 69 73 74 5b 30 | 5d 29 3b 0a 0a 20 20 20 |d_list[0|]);.. |
|00001940| 20 20 2f 2a 20 72 65 61 | 64 20 62 69 67 20 62 6c | /* rea|d big bl|
|00001950| 6f 63 6b 20 44 65 70 6f | 74 20 2a 2f 0a 20 20 20 |ock Depo|t */. |
|00001960| 20 20 66 6f 72 28 69 3d | 30 3b 69 3c 28 69 6e 74 | for(i=|0;i<(int|
|00001970| 29 6e 75 6d 5f 62 62 64 | 5f 62 6c 6f 63 6b 73 3b |)num_bbd|_blocks;|
|00001980| 69 2b 2b 29 20 7b 0a 20 | 20 20 20 20 20 20 46 69 |i++) {. | Fi|
|00001990| 6c 65 50 6f 73 20 3d 20 | 35 31 32 2a 28 4c 6f 6e |lePos = |512*(Lon|
|000019a0| 67 49 6e 74 28 42 6c 6f | 63 6b 2b 30 78 34 63 2b |gInt(Blo|ck+0x4c+|
|000019b0| 28 69 2a 34 29 29 2b 31 | 29 3b 0a 20 20 20 20 20 |(i*4))+1|);. |
|000019c0| 20 20 66 73 65 65 6b 28 | 69 6e 70 75 74 2c 46 69 | fseek(|input,Fi|
|000019d0| 6c 65 50 6f 73 2c 53 45 | 45 4b 5f 53 45 54 29 3b |lePos,SE|EK_SET);|
|000019e0| 0a 20 20 20 20 20 20 20 | 69 66 28 66 72 65 61 64 |. |if(fread|
|000019f0| 28 73 2c 35 31 32 2c 31 | 2c 69 6e 70 75 74 29 21 |(s,512,1|,input)!|
|00001a00| 3d 31 29 20 7b 0a 20 20 | 20 20 20 20 20 20 20 66 |=1) {. | f|
|00001a10| 70 72 69 6e 74 66 28 73 | 74 64 65 72 72 2c 22 32 |printf(s|tderr,"2|
|00001a20| 20 3d 3d 3d 3d 3d 3d 3d | 3d 3d 3d 3d 3e 20 49 6e | =======|====> In|
|00001a30| 70 75 74 20 66 69 6c 65 | 20 68 61 73 20 66 61 75 |put file| has fau|
|00001a40| 6c 74 79 20 62 62 64 5c | 6e 22 29 3b 0a 20 20 20 |lty bbd\|n");. |
|00001a50| 20 20 20 20 20 20 65 78 | 69 74 20 28 35 29 3b 0a | ex|it (5);.|
|00001a60| 20 20 20 20 20 20 20 7d | 0a 20 20 20 20 20 20 20 | }|. |
|00001a70| 73 20 2b 3d 20 30 78 32 | 30 30 3b 0a 20 20 20 20 |s += 0x2|00;. |
|00001a80| 20 7d 0a 0a 20 20 20 20 | 20 2f 2a 20 45 78 74 72 | }.. | /* Extr|
|00001a90| 61 63 74 20 74 68 65 20 | 73 62 64 20 62 6c 6f 63 |act the |sbd bloc|
|00001aa0| 6b 20 6c 69 73 74 20 2a | 2f 0a 20 20 20 20 20 66 |k list *|/. f|
|00001ab0| 6f 72 28 6c 65 6e 3d 31 | 3b 6c 65 6e 3c 4d 41 58 |or(len=1|;len<MAX|
|00001ac0| 42 4c 4f 43 4b 53 3b 6c | 65 6e 2b 2b 29 7b 0a 20 |BLOCKS;l|en++){. |
|00001ad0| 20 20 20 20 20 20 73 62 | 64 5f 6c 69 73 74 5b 6c | sb|d_list[l|
|00001ae0| 65 6e 5d 20 3d 20 4c 6f | 6e 67 49 6e 74 28 42 44 |en] = Lo|ngInt(BD|
|00001af0| 65 70 6f 74 2b 28 73 62 | 64 5f 6c 69 73 74 5b 6c |epot+(sb|d_list[l|
|00001b00| 65 6e 2d 31 5d 2a 34 29 | 29 3b 0a 20 20 20 20 20 |en-1]*4)|);. |
|00001b10| 20 20 69 66 28 73 62 64 | 5f 6c 69 73 74 5b 6c 65 | if(sbd|_list[le|
|00001b20| 6e 5d 3d 3d 2d 32 29 20 | 62 72 65 61 6b 3b 0a 20 |n]==-2) |break;. |
|00001b30| 20 20 20 20 7d 0a 20 20 | 20 20 20 69 66 28 6c 65 | }. | if(le|
|00001b40| 6e 3e 3d 4d 41 58 42 4c | 4f 43 4b 53 29 20 66 70 |n>=MAXBL|OCKS) fp|
|00001b50| 72 69 6e 74 66 28 73 74 | 64 65 72 72 2c 22 48 65 |rintf(st|derr,"He|
|00001b60| 6c 70 20 74 6f 6f 20 6d | 61 6e 79 20 73 62 64 20 |lp too m|any sbd |
|00001b70| 62 6c 6f 63 6b 73 5c 6e | 22 29 3b 0a 20 20 20 20 |blocks\n|");. |
|00001b80| 20 53 44 65 70 6f 74 20 | 3d 20 6d 61 6c 6c 6f 63 | SDepot |= malloc|
|00001b90| 28 35 31 32 2a 6c 65 6e | 29 3b 0a 20 20 20 20 20 |(512*len|);. |
|00001ba0| 73 20 3d 20 53 44 65 70 | 6f 74 3b 0a 20 20 20 20 |s = SDep|ot;. |
|00001bb0| 20 2f 2a 20 52 65 61 64 | 20 69 6e 20 53 6d 61 6c | /* Read| in Smal|
|00001bc0| 6c 20 42 6c 6f 63 6b 20 | 44 65 70 6f 74 20 2a 2f |l Block |Depot */|
|00001bd0| 0a 20 20 20 20 20 66 6f | 72 28 69 3d 30 3b 69 3c |. fo|r(i=0;i<|
|00001be0| 6c 65 6e 3b 69 2b 2b 29 | 20 7b 0a 20 20 20 20 20 |len;i++)| {. |
|00001bf0| 20 20 46 69 6c 65 50 6f | 73 20 3d 20 35 31 32 20 | FilePo|s = 512 |
|00001c00| 2a 28 73 62 64 5f 6c 69 | 73 74 5b 69 5d 2b 31 29 |*(sbd_li|st[i]+1)|
|00001c10| 3b 0a 20 20 20 20 20 20 | 20 66 73 65 65 6b 28 69 |;. | fseek(i|
|00001c20| 6e 70 75 74 2c 46 69 6c | 65 50 6f 73 2c 53 45 45 |nput,Fil|ePos,SEE|
|00001c30| 4b 5f 53 45 54 29 3b 0a | 20 20 20 20 20 20 20 69 |K_SET);.| i|
|00001c40| 66 28 66 72 65 61 64 28 | 73 2c 35 31 32 2c 31 2c |f(fread(|s,512,1,|
|00001c50| 69 6e 70 75 74 29 21 3d | 31 29 20 7b 0a 20 20 20 |input)!=|1) {. |
|00001c60| 20 20 20 20 20 20 66 70 | 72 69 6e 74 66 28 73 74 | fp|rintf(st|
|00001c70| 64 65 72 72 2c 22 33 20 | 3d 3d 3d 3d 3d 3d 3d 3d |derr,"3 |========|
|00001c80| 3d 3d 3d 3e 20 49 6e 70 | 75 74 20 66 69 6c 65 20 |===> Inp|ut file |
|00001c90| 68 61 73 20 66 61 75 6c | 74 79 20 4f 4c 45 0a 66 |has faul|ty OLE.f|
|00001ca0| 6f 72 6d 61 74 5c 6e 22 | 29 3b 0a 20 20 20 20 20 |ormat\n"|);. |
|00001cb0| 20 20 20 20 72 65 74 75 | 72 6e 20 35 3b 0a 20 20 | retu|rn 5;. |
|00001cc0| 20 20 20 20 20 7d 0a 20 | 20 20 20 20 20 20 73 20 | }. | s |
|00001cd0| 2b 3d 20 30 78 32 30 30 | 3b 0a 20 20 20 20 20 7d |+= 0x200|;. }|
|00001ce0| 0a 20 20 20 20 20 2f 2a | 20 45 78 74 72 61 63 74 |. /*| Extract|
|00001cf0| 20 74 68 65 20 72 6f 6f | 74 20 62 6c 6f 63 6b 20 | the roo|t block |
|00001d00| 6c 69 73 74 20 2a 2f 0a | 20 20 20 20 20 66 6f 72 |list */.| for|
|00001d10| 28 6c 65 6e 3d 31 3b 6c | 65 6e 3c 4d 41 58 42 4c |(len=1;l|en<MAXBL|
|00001d20| 4f 43 4b 53 3b 6c 65 6e | 2b 2b 29 7b 0a 20 20 20 |OCKS;len|++){. |
|00001d30| 20 20 20 20 72 6f 6f 74 | 5f 6c 69 73 74 5b 6c 65 | root|_list[le|
|00001d40| 6e 5d 20 3d 20 4c 6f 6e | 67 49 6e 74 28 42 44 65 |n] = Lon|gInt(BDe|
|00001d50| 70 6f 74 2b 28 72 6f 6f | 74 5f 6c 69 73 74 5b 6c |pot+(roo|t_list[l|
|00001d60| 65 6e 2d 31 5d 2a 34 29 | 29 3b 0a 20 20 20 20 20 |en-1]*4)|);. |
|00001d70| 20 20 66 70 72 69 6e 74 | 66 28 73 74 64 65 72 72 | fprint|f(stderr|
|00001d80| 2c 22 72 6f 6f 74 20 62 | 6c 6f 63 6b 20 25 64 5c |,"root b|lock %d\|
|00001d90| 6e 22 2c 6c 65 6e 29 3b | 0a 20 20 20 20 20 20 20 |n",len);|. |
|00001da0| 69 66 28 72 6f 6f 74 5f | 6c 69 73 74 5b 6c 65 6e |if(root_|list[len|
|00001db0| 5d 3d 3d 2d 32 29 20 62 | 72 65 61 6b 3b 0a 20 20 |]==-2) b|reak;. |
|00001dc0| 20 20 20 7d 0a 20 20 20 | 20 20 69 66 28 6c 65 6e | }. | if(len|
|00001dd0| 3e 3d 4d 41 58 42 4c 4f | 43 4b 53 29 20 66 70 72 |>=MAXBLO|CKS) fpr|
|00001de0| 69 6e 74 66 28 73 74 64 | 65 72 72 2c 22 48 65 6c |intf(std|err,"Hel|
|00001df0| 70 20 74 6f 6f 20 6d 61 | 6e 79 20 72 6f 6f 74 20 |p too ma|ny root |
|00001e00| 62 6c 6f 63 6b 73 5c 6e | 22 29 3b 0a 20 20 20 20 |blocks\n|");. |
|00001e10| 20 52 6f 6f 74 20 3d 20 | 6d 61 6c 6c 6f 63 28 35 | Root = |malloc(5|
|00001e20| 31 32 2a 6c 65 6e 29 3b | 0a 20 20 20 20 20 73 20 |12*len);|. s |
|00001e30| 3d 20 52 6f 6f 74 3b 0a | 20 20 20 20 20 2f 2a 20 |= Root;.| /* |
|00001e40| 52 65 61 64 20 69 6e 20 | 52 6f 6f 74 20 73 74 72 |Read in |Root str|
|00001e50| 65 61 6d 20 64 61 74 61 | 20 2a 2f 0a 20 20 20 20 |eam data| */. |
|00001e60| 20 66 6f 72 28 69 3d 30 | 3b 69 3c 6c 65 6e 3b 69 | for(i=0|;i<len;i|
|00001e70| 2b 2b 29 20 7b 0a 20 20 | 20 20 20 20 20 46 69 6c |++) {. | Fil|
|00001e80| 65 50 6f 73 20 3d 20 35 | 31 32 20 2a 28 72 6f 6f |ePos = 5|12 *(roo|
|00001e90| 74 5f 6c 69 73 74 5b 69 | 5d 2b 31 29 3b 0a 20 20 |t_list[i|]+1);. |
|00001ea0| 20 20 20 20 20 66 73 65 | 65 6b 28 69 6e 70 75 74 | fse|ek(input|
|00001eb0| 2c 46 69 6c 65 50 6f 73 | 2c 53 45 45 4b 5f 53 45 |,FilePos|,SEEK_SE|
|00001ec0| 54 29 3b 0a 20 20 20 20 | 20 20 20 69 66 28 66 72 |T);. | if(fr|
|00001ed0| 65 61 64 28 73 2c 35 31 | 32 2c 31 2c 69 6e 70 75 |ead(s,51|2,1,inpu|
|00001ee0| 74 29 21 3d 31 29 20 7b | 0a 20 20 20 20 20 20 20 |t)!=1) {|. |
|00001ef0| 20 20 66 70 72 69 6e 74 | 66 28 73 74 64 65 72 72 | fprint|f(stderr|
|00001f00| 2c 22 34 20 3d 3d 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3e |,"4 ====|=======>|
|00001f10| 20 49 6e 70 75 74 20 66 | 69 6c 65 20 68 61 73 20 | Input f|ile has |
|00001f20| 66 61 75 6c 74 79 20 4f | 4c 45 0a 66 6f 72 6d 61 |faulty O|LE.forma|
|00001f30| 74 5c 6e 22 29 3b 0a 20 | 20 20 20 20 20 20 20 20 |t\n");. | |
|00001f40| 72 65 74 75 72 6e 20 35 | 3b 0a 20 20 20 20 20 20 |return 5|;. |
|00001f50| 20 7d 0a 20 20 20 20 20 | 20 20 73 20 2b 3d 20 30 | }. | s += 0|
|00001f60| 78 32 30 30 3b 0a 20 20 | 20 20 20 7d 0a 0a 20 20 |x200;. | }.. |
|00001f70| 20 20 20 2f 2a 20 61 73 | 73 69 67 6e 20 73 70 61 | /* as|sign spa|
|00001f80| 63 65 20 66 6f 72 20 70 | 70 73 20 6c 69 73 74 20 |ce for p|ps list |
|00001f90| 2a 2f 0a 20 20 20 20 20 | 70 70 73 5f 6c 69 73 74 |*/. |pps_list|
|00001fa0| 20 3d 20 6d 61 6c 6c 6f | 63 28 6c 65 6e 2a 34 2a | = mallo|c(len*4*|
|00001fb0| 73 69 7a 65 6f 66 28 70 | 70 73 5f 65 6e 74 72 79 |sizeof(p|ps_entry|
|00001fc0| 20 2a 29 29 3b 0a 20 20 | 20 20 20 66 6f 72 28 6a | *));. | for(j|
|00001fd0| 3d 30 3b 6a 3c 6c 65 6e | 2a 34 3b 6a 2b 2b 29 20 |=0;j<len|*4;j++) |
|00001fe0| 70 70 73 5f 6c 69 73 74 | 5b 6a 5d 20 3d 20 6d 61 |pps_list|[j] = ma|
|00001ff0| 6c 6c 6f 63 28 73 69 7a | 65 6f 66 28 70 70 73 5f |lloc(siz|eof(pps_|
|00002000| 65 6e 74 72 79 29 29 3b | 0a 20 20 20 20 20 2f 2a |entry));|. /*|
|00002010| 20 53 74 6f 72 65 20 70 | 73 73 20 65 6e 74 72 79 | Store p|ss entry|
|00002020| 20 64 65 74 61 69 6c 73 | 20 61 6e 64 20 6c 6f 6f | details| and loo|
|00002030| 6b 20 6f 75 74 20 66 6f | 72 20 52 6f 6f 74 20 45 |k out fo|r Root E|
|00002040| 6e 74 72 79 20 2a 2f 0a | 20 20 20 20 20 66 6f 72 |ntry */.| for|
|00002050| 28 6a 3d 30 3b 6a 3c 6c | 65 6e 2a 34 3b 6a 2b 2b |(j=0;j<l|en*4;j++|
|00002060| 29 20 7b 0a 20 20 20 20 | 20 20 20 70 70 73 5f 6c |) {. | pps_l|
|00002070| 69 73 74 5b 6a 5d 2d 3e | 6c 65 76 65 6c 20 3d 20 |ist[j]->|level = |
|00002080| 2d 31 3b 0a 20 20 20 20 | 20 20 20 70 70 73 5f 6c |-1;. | pps_l|
|00002090| 69 73 74 5b 6a 5d 2d 3e | 69 6e 64 65 78 20 3d 20 |ist[j]->|index = |
|000020a0| 6a 3b 0a 20 20 20 20 20 | 20 20 73 20 3d 20 52 6f |j;. | s = Ro|
|000020b0| 6f 74 2b 28 6a 2a 30 78 | 38 30 29 3b 0a 20 20 20 |ot+(j*0x|80);. |
|000020c0| 20 20 20 20 2f 2a 20 73 | 6f 6d 65 20 70 70 73 20 | /* s|ome pps |
|000020d0| 6e 61 6d 65 73 20 68 61 | 76 65 20 66 69 72 73 74 |names ha|ve first|
|000020e0| 20 62 79 74 65 20 61 73 | 20 61 6e 20 69 6e 74 65 | byte as| an inte|
|000020f0| 67 65 72 20 21 21 0a 20 | 20 20 20 20 20 20 20 20 |ger !!. | |
|00002100| 20 73 6f 20 77 65 20 6d | 61 6b 65 20 69 74 20 76 | so we m|ake it v|
|00002110| 69 73 69 62 6c 65 20 73 | 6f 20 79 6f 75 20 63 61 |isible s|o you ca|
|00002120| 6e 20 65 78 74 72 61 63 | 74 20 61 20 6e 61 6d 65 |n extrac|t a name|
|00002130| 64 20 70 70 73 20 2a 2f | 0a 20 20 20 20 20 20 20 |d pps */|. |
|00002140| 69 66 28 21 69 73 70 72 | 69 6e 74 28 2a 73 29 29 |if(!ispr|int(*s))|
|00002150| 20 2a 73 20 3d 20 2a 73 | 20 2b 20 34 38 3b 0a 20 | *s = *s| + 48;. |
|00002160| 20 20 20 20 20 20 70 70 | 73 5f 6c 69 73 74 5b 6a | pp|s_list[j|
|00002170| 5d 2d 3e 6e 73 69 7a 65 | 3d 53 68 6f 72 74 49 6e |]->nsize|=ShortIn|
|00002180| 74 28 73 2b 30 78 34 30 | 29 3b 0a 20 20 20 20 20 |t(s+0x40|);. |
|00002190| 20 20 69 66 28 70 70 73 | 5f 6c 69 73 74 5b 6a 5d | if(pps|_list[j]|
|000021a0| 2d 3e 6e 73 69 7a 65 20 | 3d 3d 20 30 29 20 63 6f |->nsize |== 0) co|
|000021b0| 6e 74 69 6e 75 65 3b 0a | 20 20 20 20 20 20 20 66 |ntinue;.| f|
|000021c0| 6f 72 28 70 3d 70 70 73 | 5f 6c 69 73 74 5b 6a 5d |or(p=pps|_list[j]|
|000021d0| 2d 3e 6e 61 6d 65 2c 74 | 3d 73 3b 74 3c 73 2b 70 |->name,t|=s;t<s+p|
|000021e0| 70 73 5f 6c 69 73 74 5b | 6a 5d 2d 3e 6e 73 69 7a |ps_list[|j]->nsiz|
|000021f0| 65 3b 74 2b 2b 29 20 2a | 70 2b 2b 20 3d 0a 2a 74 |e;t++) *|p++ =.*t|
|00002200| 2b 2b 3b 0a 20 20 20 20 | 20 20 20 73 2b 3d 30 78 |++;. | s+=0x|
|00002210| 34 32 3b 0a 20 20 20 20 | 20 20 20 70 70 73 5f 6c |42;. | pps_l|
|00002220| 69 73 74 5b 6a 5d 2d 3e | 74 79 70 65 20 3d 20 2a |ist[j]->|type = *|
|00002230| 73 3b 0a 20 20 20 20 20 | 20 20 69 66 28 70 70 73 |s;. | if(pps|
|00002240| 5f 6c 69 73 74 5b 6a 5d | 2d 3e 74 79 70 65 20 3d |_list[j]|->type =|
|00002250| 3d 20 35 29 20 7b 0a 20 | 20 20 20 20 20 20 20 20 |= 5) {. | |
|00002260| 72 6f 6f 74 5f 65 6e 74 | 72 79 20 3d 20 6a 3b 20 |root_ent|ry = j; |
|00002270| 2f 2a 20 74 68 69 73 20 | 69 73 20 72 6f 6f 74 20 |/* this |is root |
|00002280| 2a 2f 0a 20 20 20 20 20 | 20 20 7d 0a 20 20 20 20 |*/. | }. |
|00002290| 20 20 20 73 2b 3d 30 78 | 30 32 3b 0a 20 20 20 20 | s+=0x|02;. |
|000022a0| 20 20 20 6c 69 6e 6b 74 | 6f 20 3d 20 4c 6f 6e 67 | linkt|o = Long|
|000022b0| 49 6e 74 28 73 29 3b 0a | 20 20 20 20 20 20 20 69 |Int(s);.| i|
|000022c0| 66 28 6c 69 6e 6b 74 6f | 20 21 3d 20 2d 31 29 20 |f(linkto| != -1) |
|000022d0| 70 70 73 5f 6c 69 73 74 | 5b 6a 5d 2d 3e 70 72 65 |pps_list|[j]->pre|
|000022e0| 76 69 6f 75 73 20 3d 20 | 70 70 73 5f 6c 69 73 74 |vious = |pps_list|
|000022f0| 5b 6c 69 6e 6b 74 6f 5d | 3b 0a 20 20 20 20 20 20 |[linkto]|;. |
|00002300| 20 65 6c 73 65 20 70 70 | 73 5f 6c 69 73 74 5b 6a | else pp|s_list[j|
|00002310| 5d 2d 3e 70 72 65 76 69 | 6f 75 73 20 3d 20 4e 55 |]->previ|ous = NU|
|00002320| 4c 4c 3b 0a 20 20 20 20 | 20 20 20 73 2b 3d 30 78 |LL;. | s+=0x|
|00002330| 30 34 3b 0a 20 20 20 20 | 20 20 20 6c 69 6e 6b 74 |04;. | linkt|
|00002340| 6f 20 3d 20 4c 6f 6e 67 | 49 6e 74 28 73 29 3b 0a |o = Long|Int(s);.|
|00002350| 20 20 20 20 20 20 20 69 | 66 28 6c 69 6e 6b 74 6f | i|f(linkto|
|00002360| 20 21 3d 20 2d 31 29 20 | 70 70 73 5f 6c 69 73 74 | != -1) |pps_list|
|00002370| 5b 6a 5d 2d 3e 6e 65 78 | 74 20 3d 20 70 70 73 5f |[j]->nex|t = pps_|
|00002380| 6c 69 73 74 5b 6c 69 6e | 6b 74 6f 5d 3b 0a 20 20 |list[lin|kto];. |
|00002390| 20 20 20 20 20 65 6c 73 | 65 20 70 70 73 5f 6c 69 | els|e pps_li|
|000023a0| 73 74 5b 6a 5d 2d 3e 6e | 65 78 74 20 3d 20 4e 55 |st[j]->n|ext = NU|
|000023b0| 4c 4c 3b 0a 20 20 20 20 | 20 20 20 73 2b 3d 30 78 |LL;. | s+=0x|
|000023c0| 30 34 3b 0a 20 20 20 20 | 20 20 20 6c 69 6e 6b 74 |04;. | linkt|
|000023d0| 6f 20 3d 20 4c 6f 6e 67 | 49 6e 74 28 73 29 3b 0a |o = Long|Int(s);.|
|000023e0| 20 20 20 20 20 20 20 69 | 66 28 6c 69 6e 6b 74 6f | i|f(linkto|
|000023f0| 20 21 3d 20 2d 31 29 20 | 70 70 73 5f 6c 69 73 74 | != -1) |pps_list|
|00002400| 5b 6a 5d 2d 3e 64 69 72 | 65 63 74 6f 72 79 20 3d |[j]->dir|ectory =|
|00002410| 20 70 70 73 5f 6c 69 73 | 74 5b 6c 69 6e 6b 74 6f | pps_lis|t[linkto|
|00002420| 5d 3b 0a 20 20 20 20 20 | 20 20 65 6c 73 65 20 70 |];. | else p|
|00002430| 70 73 5f 6c 69 73 74 5b | 6a 5d 2d 3e 64 69 72 65 |ps_list[|j]->dire|
|00002440| 63 74 6f 72 79 20 3d 20 | 4e 55 4c 4c 3b 0a 20 20 |ctory = |NULL;. |
|00002450| 20 20 20 20 20 73 2b 3d | 30 78 32 38 3b 0a 20 20 | s+=|0x28;. |
|00002460| 20 20 20 20 20 70 70 73 | 5f 6c 69 73 74 5b 6a 5d | pps|_list[j]|
|00002470| 2d 3e 73 74 61 72 74 20 | 3d 20 4c 6f 6e 67 49 6e |->start |= LongIn|
|00002480| 74 28 73 29 3b 0a 20 20 | 20 20 20 20 20 73 2b 3d |t(s);. | s+=|
|00002490| 30 78 30 34 3b 0a 20 20 | 20 20 20 20 20 70 70 73 |0x04;. | pps|
|000024a0| 5f 6c 69 73 74 5b 6a 5d | 2d 3e 73 69 7a 65 20 3d |_list[j]|->size =|
|000024b0| 20 4c 6f 6e 67 49 6e 74 | 28 73 29 3b 0a 20 20 20 | LongInt|(s);. |
|000024c0| 20 20 7d 0a 0a 20 20 20 | 20 20 2f 2a 20 67 6f 20 | }.. | /* go |
|000024d0| 74 68 72 6f 75 67 68 20 | 74 68 65 20 70 70 73 20 |through |the pps |
|000024e0| 65 6e 74 72 69 65 73 2c | 20 74 61 67 67 69 6e 67 |entries,| tagging|
|000024f0| 20 74 68 65 6d 20 77 69 | 74 68 20 6c 65 76 65 6c | them wi|th level|
|00002500| 20 6e 75 6d 62 65 72 0a | 20 20 20 20 20 20 20 20 | number.| |
|00002510| 75 73 65 20 72 65 63 75 | 72 73 69 76 65 20 72 6f |use recu|rsive ro|
|00002520| 75 74 69 6e 65 20 74 6f | 20 66 6f 6c 6c 6f 77 20 |utine to| follow |
|00002530| 6c 69 73 74 20 73 74 61 | 72 74 69 6e 67 20 61 74 |list sta|rting at|
|00002540| 20 72 6f 6f 74 20 65 6e | 74 72 79 20 2a 2f 0a 20 | root en|try */. |
|00002550| 20 20 20 20 75 6e 72 61 | 76 65 6c 28 70 70 73 5f | unra|vel(pps_|
|00002560| 6c 69 73 74 5b 72 6f 6f | 74 5f 65 6e 74 72 79 5d |list[roo|t_entry]|
|00002570| 2c 30 29 3b 0a 0a 20 20 | 20 20 20 2f 2a 20 67 6f |,0);.. | /* go|
|00002580| 20 74 68 72 6f 75 67 68 | 20 74 68 65 20 6c 65 76 | through| the lev|
|00002590| 65 6c 20 30 20 6c 69 73 | 74 20 6c 6f 6f 6b 69 6e |el 0 lis|t lookin|
|000025a0| 67 20 66 6f 72 20 6e 61 | 6d 65 64 20 65 6e 74 72 |g for na|med entr|
|000025b0| 69 65 73 20 2a 2f 0a 20 | 20 20 20 20 66 6f 72 28 |ies */. | for(|
|000025c0| 6a 3d 30 3b 6a 3c 6c 65 | 6e 2a 34 3b 6a 2b 2b 29 |j=0;j<le|n*4;j++)|
|000025d0| 20 7b 0a 20 20 20 20 20 | 20 20 69 66 28 70 70 73 | {. | if(pps|
|000025e0| 5f 6c 69 73 74 5b 6a 5d | 2d 3e 6e 73 69 7a 65 20 |_list[j]|->nsize |
|000025f0| 3d 3d 20 30 29 20 63 6f | 6e 74 69 6e 75 65 3b 20 |== 0) co|ntinue; |
|00002600| 2f 2a 20 73 6b 69 70 20 | 65 6d 70 74 79 20 70 70 |/* skip |empty pp|
|00002610| 73 20 2a 2f 0a 20 20 20 | 20 20 20 20 2f 2a 20 77 |s */. | /* w|
|00002620| 65 20 6d 6f 73 74 6c 79 | 20 6f 6e 6c 79 20 77 61 |e mostly| only wa|
|00002630| 6e 74 20 74 68 65 20 74 | 6f 70 20 6c 65 76 65 6c |nt the t|op level|
|00002640| 20 28 6c 65 76 65 6c 20 | 31 29 20 73 74 75 66 66 | (level |1) stuff|
|00002650| 2c 20 73 6f 0a 20 20 20 | 20 20 20 20 20 20 20 68 |, so. | h|
|00002660| 65 72 65 20 77 65 20 73 | 6b 69 70 20 61 6e 79 74 |ere we s|kip anyt|
|00002670| 68 69 6e 67 20 6d 6f 72 | 65 20 64 65 65 70 6c 79 |hing mor|e deeply|
|00002680| 20 6e 65 73 74 65 64 2e | 20 2a 2f 0a 20 20 20 20 | nested.| */. |
|00002690| 20 20 20 69 66 28 70 70 | 73 5f 6c 69 73 74 5b 6a | if(pp|s_list[j|
|000026a0| 5d 2d 3e 6c 65 76 65 6c | 20 3e 20 31 29 20 63 6f |]->level| > 1) co|
|000026b0| 6e 74 69 6e 75 65 3b 0a | 20 20 20 20 20 20 20 70 |ntinue;.| p|
|000026c0| 70 73 5f 73 74 61 72 74 | 20 3d 20 70 70 73 5f 6c |ps_start| = pps_l|
|000026d0| 69 73 74 5b 6a 5d 2d 3e | 73 74 61 72 74 3b 0a 20 |ist[j]->|start;. |
|000026e0| 20 20 20 20 20 20 70 70 | 73 5f 73 69 7a 65 20 20 | pp|s_size |
|000026f0| 3d 20 70 70 73 5f 6c 69 | 73 74 5b 6a 5d 2d 3e 73 |= pps_li|st[j]->s|
|00002700| 69 7a 65 3b 0a 20 20 20 | 20 20 20 20 4f 4c 45 66 |ize;. | OLEf|
|00002710| 69 6c 65 20 3d 20 4e 55 | 4c 4c 3b 0a 20 20 20 20 |ile = NU|LL;. |
|00002720| 20 20 20 69 66 28 70 70 | 73 5f 6c 69 73 74 5b 6a | if(pp|s_list[j|
|00002730| 5d 2d 3e 74 79 70 65 3d | 3d 35 29 20 7b 20 20 2f |]->type=|=5) { /|
|00002740| 2a 20 52 6f 6f 74 20 65 | 6e 74 72 79 20 2a 2f 0a |* Root e|ntry */.|
|00002750| 20 20 20 20 20 20 20 20 | 20 4f 4c 45 66 69 6c 65 | | OLEfile|
|00002760| 20 3d 20 74 6d 70 66 69 | 6c 65 28 29 3b 0a 20 20 | = tmpfi|le();. |
|00002770| 20 20 20 20 20 20 20 73 | 62 66 69 6c 65 20 3d 20 | s|bfile = |
|00002780| 4f 4c 45 66 69 6c 65 3b | 0a 20 20 20 20 20 20 20 |OLEfile;|. |
|00002790| 20 20 69 66 28 64 65 62 | 75 67 29 20 66 70 72 69 | if(deb|ug) fpri|
|000027a0| 6e 74 66 28 73 74 64 65 | 72 72 2c 22 52 65 61 64 |ntf(stde|rr,"Read|
|000027b0| 69 6e 67 20 73 62 46 69 | 6c 65 20 25 6c 64 5c 6e |ing sbFi|le %ld\n|
|000027c0| 22 2c 70 70 73 5f 73 74 | 61 72 74 29 3b 0a 20 20 |",pps_st|art);. |
|000027d0| 20 20 20 20 20 7d 0a 20 | 20 20 20 20 20 20 65 6c | }. | el|
|000027e0| 73 65 20 69 66 28 21 73 | 74 72 63 6d 70 28 70 70 |se if(!s|trcmp(pp|
|000027f0| 73 5f 6c 69 73 74 5b 6a | 5d 2d 3e 6e 61 6d 65 2c |s_list[j|]->name,|
|00002800| 54 61 72 67 65 74 29 29 | 20 7b 0a 20 20 20 20 20 |Target))| {. |
|00002810| 20 20 20 20 4f 4c 45 66 | 69 6c 65 3d 66 6f 70 65 | OLEf|ile=fope|
|00002820| 6e 28 22 4f 4c 45 2e 74 | 6d 70 22 2c 22 77 2b 62 |n("OLE.t|mp","w+b|
|00002830| 22 29 3b 20 20 2f 2a 20 | 74 72 79 20 61 6e 64 20 |"); /* |try and |
|00002840| 6f 70 65 6e 20 2a 2f 0a | 20 20 20 20 20 20 20 20 |open */.| |
|00002850| 20 70 72 69 6e 74 66 28 | 22 52 65 61 64 69 6e 67 | printf(|"Reading|
|00002860| 20 54 61 72 67 65 74 20 | 25 73 5c 6e 22 2c 54 61 | Target |%s\n",Ta|
|00002870| 72 67 65 74 29 3b 0a 20 | 20 20 20 20 20 20 7d 0a |rget);. | }.|
|00002880| 20 20 20 20 20 20 20 69 | 66 28 70 70 73 5f 73 69 | i|f(pps_si|
|00002890| 7a 65 3c 3d 30 29 20 4f | 4c 45 66 69 6c 65 20 3d |ze<=0) O|LEfile =|
|000028a0| 20 4e 55 4c 4c 3b 0a 20 | 20 20 20 20 20 20 69 66 | NULL;. | if|
|000028b0| 28 4f 4c 45 66 69 6c 65 | 20 3d 3d 20 4e 55 4c 4c |(OLEfile| == NULL|
|000028c0| 29 20 63 6f 6e 74 69 6e | 75 65 3b 0a 20 20 20 20 |) contin|ue;. |
|000028d0| 20 20 20 69 66 28 70 70 | 73 5f 73 69 7a 65 3e 3d | if(pp|s_size>=|
|000028e0| 34 30 39 36 20 7c 20 4f | 4c 45 66 69 6c 65 3d 3d |4096 | O|LEfile==|
|000028f0| 73 62 66 69 6c 65 29 20 | 7b 0a 20 20 20 20 20 20 |sbfile) |{. |
|00002900| 20 20 20 4f 66 66 73 65 | 74 20 3d 20 31 3b 0a 20 | Offse|t = 1;. |
|00002910| 20 20 20 20 20 20 20 20 | 42 6c 6f 63 6b 53 69 7a | |BlockSiz|
|00002920| 65 20 3d 20 35 31 32 3b | 0a 20 20 20 20 20 20 20 |e = 512;|. |
|00002930| 20 20 69 6e 66 69 6c 65 | 20 3d 20 69 6e 70 75 74 | infile| = input|
|00002940| 3b 0a 20 20 20 20 20 20 | 20 20 20 44 65 70 6f 74 |;. | Depot|
|00002950| 20 3d 20 42 44 65 70 6f | 74 3b 0a 20 20 20 20 20 | = BDepo|t;. |
|00002960| 20 20 7d 20 65 6c 73 65 | 20 7b 0a 20 20 20 20 20 | } else| {. |
|00002970| 20 20 20 20 4f 66 66 73 | 65 74 20 3d 20 30 3b 0a | Offs|et = 0;.|
|00002980| 20 20 20 20 20 20 20 20 | 20 42 6c 6f 63 6b 53 69 | | BlockSi|
|00002990| 7a 65 20 3d 20 36 34 3b | 0a 20 20 20 20 20 20 20 |ze = 64;|. |
|000029a0| 20 20 69 6e 66 69 6c 65 | 20 3d 20 73 62 66 69 6c | infile| = sbfil|
|000029b0| 65 3b 0a 20 20 20 20 20 | 20 20 20 20 44 65 70 6f |e;. | Depo|
|000029c0| 74 20 3d 20 53 44 65 70 | 6f 74 3b 0a 20 20 20 20 |t = SDep|ot;. |
|000029d0| 20 20 20 7d 0a 20 20 20 | 20 20 20 20 77 68 69 6c | }. | whil|
|000029e0| 65 28 70 70 73 5f 73 74 | 61 72 74 20 21 3d 20 2d |e(pps_st|art != -|
|000029f0| 32 29 20 7b 0a 20 20 20 | 20 20 20 20 20 20 69 66 |2) {. | if|
|00002a00| 28 64 65 62 75 67 29 20 | 66 70 72 69 6e 74 66 28 |(debug) |fprintf(|
|00002a10| 73 74 64 65 72 72 2c 22 | 52 65 61 64 69 6e 67 20 |stderr,"|Reading |
|00002a20| 62 6c 6f 63 6b 20 25 6c | 64 5c 6e 22 2c 70 70 73 |block %l|d\n",pps|
|00002a30| 5f 73 74 61 72 74 29 3b | 0a 20 20 20 20 20 20 20 |_start);|. |
|00002a40| 20 20 46 69 6c 65 50 6f | 73 20 3d 20 28 70 70 73 | FilePo|s = (pps|
|00002a50| 5f 73 74 61 72 74 2b 4f | 66 66 73 65 74 29 2a 20 |_start+O|ffset)* |
|00002a60| 42 6c 6f 63 6b 53 69 7a | 65 3b 0a 20 20 20 20 20 |BlockSiz|e;. |
|00002a70| 20 20 20 20 62 79 74 65 | 73 20 3d 20 4d 49 4e 28 | byte|s = MIN(|
|00002a80| 42 6c 6f 63 6b 53 69 7a | 65 2c 70 70 73 5f 73 69 |BlockSiz|e,pps_si|
|00002a90| 7a 65 29 3b 0a 20 20 20 | 20 20 20 20 20 20 66 73 |ze);. | fs|
|00002aa0| 65 65 6b 28 69 6e 66 69 | 6c 65 2c 46 69 6c 65 50 |eek(infi|le,FileP|
|00002ab0| 6f 73 2c 53 45 45 4b 5f | 53 45 54 29 3b 0a 20 20 |os,SEEK_|SET);. |
|00002ac0| 20 20 20 20 20 20 20 69 | 66 28 66 72 65 61 64 28 | i|f(fread(|
|00002ad0| 42 6c 6f 63 6b 2c 62 79 | 74 65 73 2c 31 2c 69 6e |Block,by|tes,1,in|
|00002ae0| 66 69 6c 65 29 21 3d 31 | 29 20 7b 0a 20 20 20 20 |file)!=1|) {. |
|00002af0| 20 20 20 20 20 20 20 66 | 70 72 69 6e 74 66 28 73 | f|printf(s|
|00002b00| 74 64 65 72 72 2c 22 35 | 20 3d 3d 3d 3d 3d 3d 3d |tderr,"5| =======|
|00002b10| 3d 3d 3d 3d 3e 20 49 6e | 70 75 74 20 66 69 6c 65 |====> In|put file|
|00002b20| 20 68 61 73 20 66 61 75 | 6c 74 79 20 4f 4c 45 0a | has fau|lty OLE.|
|00002b30| 66 6f 72 6d 61 74 5c 6e | 22 29 3b 0a 20 20 20 20 |format\n|");. |
|00002b40| 20 20 20 20 20 20 20 65 | 78 69 74 20 28 35 29 3b | e|xit (5);|
|00002b50| 0a 20 20 20 20 20 20 20 | 20 20 7d 0a 20 20 20 20 |. | }. |
|00002b60| 20 20 20 20 20 66 77 72 | 69 74 65 28 42 6c 6f 63 | fwr|ite(Bloc|
|00002b70| 6b 2c 62 79 74 65 73 2c | 31 2c 4f 4c 45 66 69 6c |k,bytes,|1,OLEfil|
|00002b80| 65 29 3b 0a 20 20 20 20 | 20 20 20 20 20 70 70 73 |e);. | pps|
|00002b90| 5f 73 74 61 72 74 20 3d | 20 4c 6f 6e 67 49 6e 74 |_start =| LongInt|
|00002ba0| 28 44 65 70 6f 74 2b 28 | 70 70 73 5f 73 74 61 72 |(Depot+(|pps_star|
|00002bb0| 74 2a 34 29 29 3b 0a 20 | 20 20 20 20 20 20 20 20 |t*4));. | |
|00002bc0| 70 70 73 5f 73 69 7a 65 | 20 2d 3d 20 42 6c 6f 63 |pps_size| -= Bloc|
|00002bd0| 6b 53 69 7a 65 3b 0a 20 | 20 20 20 20 20 20 20 20 |kSize;. | |
|00002be0| 69 66 28 70 70 73 5f 73 | 69 7a 65 20 3c 3d 20 30 |if(pps_s|ize <= 0|
|00002bf0| 29 20 70 70 73 5f 73 74 | 61 72 74 3d 2d 32 3b 0a |) pps_st|art=-2;.|
|00002c00| 20 20 20 20 20 20 20 7d | 0a 20 20 20 20 20 20 20 | }|. |
|00002c10| 72 65 77 69 6e 64 28 4f | 4c 45 66 69 6c 65 29 3b |rewind(O|LEfile);|
|00002c20| 0a 20 20 20 20 20 7d 0a | 20 20 20 20 66 6f 72 28 |. }.| for(|
|00002c30| 6a 3d 30 3b 6a 3c 6c 65 | 6e 2a 34 3b 6a 2b 2b 29 |j=0;j<le|n*4;j++)|
|00002c40| 20 66 72 65 65 28 70 70 | 73 5f 6c 69 73 74 5b 6a | free(pp|s_list[j|
|00002c50| 5d 29 3b 0a 20 20 20 20 | 66 72 65 65 28 70 70 73 |]);. |free(pps|
|00002c60| 5f 6c 69 73 74 29 3b 0a | 20 20 20 20 66 72 65 65 |_list);.| free|
|00002c70| 28 52 6f 6f 74 29 3b 0a | 20 20 20 20 66 72 65 65 |(Root);.| free|
|00002c80| 28 42 44 65 70 6f 74 29 | 3b 0a 20 20 20 20 66 72 |(BDepot)|;. fr|
|00002c90| 65 65 28 42 6c 6f 63 6b | 29 3b 0a 20 20 20 20 66 |ee(Block|);. f|
|00002ca0| 63 6c 6f 73 65 28 69 6e | 70 75 74 29 3b 0a 20 20 |close(in|put);. |
|00002cb0| 20 20 72 65 74 75 72 6e | 20 30 3b 0a 20 20 7d 20 | return| 0;. } |
|00002cc0| 65 6c 73 65 20 7b 0a 20 | 20 20 20 2f 2a 20 6e 6f |else {. | /* no|
|00002cd0| 74 20 61 20 4f 4c 45 20 | 66 69 6c 65 21 20 2a 2f |t a OLE |file! */|
|00002ce0| 0a 20 20 20 20 66 70 72 | 69 6e 74 66 28 73 74 64 |. fpr|intf(std|
|00002cf0| 65 72 72 2c 22 37 20 3d | 3d 3d 3d 3d 3d 3d 3d 3d |err,"7 =|========|
|00002d00| 3d 3d 3e 20 49 6e 70 75 | 74 20 66 69 6c 65 20 69 |==> Inpu|t file i|
|00002d10| 73 20 6e 6f 74 20 61 6e | 20 4f 4c 45 20 66 69 6c |s not an| OLE fil|
|00002d20| 65 5c 6e 22 29 3b 0a 20 | 20 20 20 65 78 69 74 20 |e\n");. | exit |
|00002d30| 28 38 29 3b 0a 20 20 7d | 0a 7d 0a |(8);. }|.}. |
+--------+-------------------------+-------------------------+--------+--------+